{
 "metadata": {
  "name": "Conditional_expectation_MSE"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "There are lots of statistics in statistical signal processing, but to use statistics effectively with signals, it helps to have a certain unifying perspective on both. To introduce these ideas, let's start with the  powerful and intimate connection between least mean-squared-error (MSE) problems and conditional expectation that is sadly not emphasized in most courses. \n",
      "\n",
      "Let's start with an example: suppose we have two fair six-sided die ($X$ and $Y$) and I want to measure the sum of the two variables as $Z=X+Y$. Further, let's suppose that given $Z$, I want the best estimate of $X$ in the mean-squared-sense. Thus, I want to minimize the following:\n",
      "\n",
      "$$ J(\\alpha) = \\sum ( x - \\alpha z )^2 \\mathbb{P}(x,z)   $$\n",
      "\n",
      "Here $\\mathbb{P}$ encapsulates the density (i.e. mass) function for this problem. The idea is that when we have solved this problem, we will have a function of $Z$ that is going to be the minimum MSE  estimate of $X$.\n",
      "\n",
      "We can substitute in for $Z$ in $J$ and get:\n",
      "\n",
      "$$ J(\\alpha) = \\sum ( x - \\alpha (x+y) )^2 \\mathbb{P}(x,y)   $$\n",
      "\n",
      "Let's work out the steps in `sympy` in the following:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import sympy\n",
      "from sympy import stats, simplify, Rational, Integer,Eq\n",
      "from sympy.stats import density, E\n",
      "from sympy.abc import a\n",
      "\n",
      "x=stats.Die('D1',6) # 1st six sided die\n",
      "y=stats.Die('D2',6) # 2nd six sides die\n",
      "z = x+y             # sum of 1st and 2nd die\n",
      "\n",
      "J = stats.E((x - a*(x+y))**2)         # expectation\n",
      "sol=sympy.solve(sympy.diff(J,a),a)[0] # using calculus to minimize\n",
      "print sol # solution is 1/2"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "1/2\n"
       ]
      }
     ],
     "prompt_number": 14
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "This says that $z/2$ is the MSE estimate of $X$ given $Z$ which means geometrically ( interpreting the MSE as a squared distance weighted by the probability mass function) that $z/2$ is as *close* to $x$ as we are going to get for a given $z$."
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Let's look at the same problem using the conditional expectation operator $ \\mathbb{E}(\\cdot|z) $ and apply it to our definition of $Z$, then\n",
      "\n",
      "$$ \\mathbb{E}(z|z) = \\mathbb{E}(x+y|z) = \\mathbb{E}(x|z) + \\mathbb{E}(y|z) =z  $$\n",
      "\n",
      "where we've used the linearity of the expectation. Now, since by the symmetry of the problem, we have \n",
      "\n",
      "$$ \\mathbb{E}(x|z) = \\mathbb{E}(y|z) $$\n",
      "\n",
      "we can plug this in and solve\n",
      "\n",
      "$$  2 \\mathbb{E}(x|z)  =z $$ \n",
      "\n",
      "which gives\n",
      "\n",
      "$$   \\mathbb{E}(x|z)  =\\frac{z}{2} $$ \n",
      "\n",
      "which is suspiciously equal to the MSE estimate we just found. This is not an accident! The proof of this is not hard,  but let's look at some pictures first"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "fig, ax = subplots()\n",
      "v = arange(1,7) + arange(1,7)[:,None]\n",
      "foo=lambda i: density(z)[Integer(i)].evalf() # some tweaks to get a float out\n",
      "Zmass=array(map(foo,v.flat),dtype=float32).reshape(6,6)\n",
      "\n",
      "ax.pcolor(arange(1,8),arange(1,8),Zmass,cmap=cm.gray)\n",
      "ax.set_xticks([(i+0.5) for i in range(1,7)])\n",
      "ax.set_xticklabels([str(i) for i in range(1,7)])\n",
      "ax.set_yticks([(i+0.5) for i in range(1,7)])\n",
      "ax.set_yticklabels([str(i) for i in range(1,7)])\n",
      "for i in range(1,7):\n",
      "    for j in range(1,7):\n",
      "        ax.text(i+.5,j+.5,str(i+j),fontsize=18,color='y')\n",
      "ax.set_title(r'Probability Mass for $Z$',fontsize=18)    \n",
      "ax.set_xlabel('$X$ values',fontsize=18)\n",
      "ax.set_ylabel('$Y$ values',fontsize=18);"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "display_data",
       "png": "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\nBZWVlSxbtoz4+Phm6w0aNKjVx+fn5zN48OAWBzvNZjMDBw4kPz+/xWMah0Vaa/v666+b2pYvX855\n553XNJ7cu3fvpmmKBQUFHd5uZ8nKymLChAm8+uqr6LoOwBtvvIHD4Wgx5NMWc+fO5eDBg3zyySe8\n/PLLXHDBBWcd2mjre7Zw4UI8Hg/nnnsu3/ve95g/fz5vv/12s2GjtqzTXh35vJzus9dWH374ITNn\nzuSxxx5j1qxZAW1L8pNFP4wNHDiQcePGMXbsWIYOHYrdbm91vcjIyJDmevHFF5k7dy7x8fE89dRT\nvPXWW6xfv76p59tYVLuaX/7yl5w4cYK3334bgKVLl5KamsqPfvSjdm/rsssuIz09nUWLFrFx48Yz\n9vKhfe/ZxIkTOXLkCK+++ipjx47lX//6F1dddRVjx45tOujblnVCIZDP3o4dO7jqqqu49dZbuf32\n25vat27dyt69e4MRr0eSRb8HGzRoEF999RVer7dZu67rHDhwoNUZK/v27TttW+MUv1dffZV+/frx\nwQcfMH/+fK688krGjRtH7969T5ulLdsN1NkO/k6bNo3evXuzdOlS9u/fz6effsp111131umhrTGb\nzcyePZt///vfREREcM0115xx/fa+Z3FxcfziF7/gpZde4siRI8ybN4/Nmzc3myralnXaoyOfl446\nePAgkyZN4ic/+Ql/+tOfmi1buXJlwHsQPZks+j3Yj3/8Y06cONFiquKLL75IWVkZM2bMaPGY5557\njpqamqbfq6uref755+nTpw+jR48G/NP6qqqqmp0roOs6jz322GmztGW7gUpKSgKgvLy81eWqqjJn\nzhzef/99HnroIQBuuOGGDj/fjTfeyIMPPsjzzz9PVFTUGddt63vm8/moqqpq8fjGoTCXy9WmdTqi\nI5+XjigsLOSyyy7j+9//fovn2rdvHzU1NWiaFpTn6onklM0e7Le//S2vvvoqN998Mzt27GDEiBHs\n3LmTl19+meHDh3Prrbe2eMzAgQO54IILmDt3btPUysLCQlauXNk0Xe+nP/0p9957LxMmTOCqq65C\nURRee+21pqLbmrZsN1C5ublYrVYeeeQRKioqsNvt9O/fv9mXyvz583niiSd4/fXXGTt2LAMGDOjw\n8/Xp04cHH3ywTeu29T2rqakhNTWVadOmMWLECGJjY9m1axevv/46aWlpXHbZZW1apyM68nlpr8rK\n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\nAAAASUVORK5CYII=\n",
       "text": [
        "<matplotlib.figure.Figure at 0x456d0b0>"
       ]
      }
     ],
     "prompt_number": 15
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "The figure shows the values of $Z$ in yellow with the corresponding values for $X$ and $Y$ on the axes. Suppose $z=2$, then the closest $X$ to this is $X=1$, which is what $\\mathbb{E}(x|z)=z/2=1$ gives. What's more interesting is what happens when $Z=7$? In this case, this value is spread out along the $X$ axis so if $X=1$, then $Z$ is 6 units away, if $X=2$, then $Z$ is 5 units away and so on.\n",
      "\n",
      "Now, back to the original question, if we had $Z=7$ and I wanted to get as close as I could to this using $X$, then why not choose $X=6$ which is only one unit away from $Z$? The problem with doing that is $X=6$ only occurs 1/6 of the time, so I'm not likely to get it right the other 5/6 of the time. So, 1/6 of the time I'm one unit away but 5/6 of the time I'm much more than one unit away. This means that the MSE score is going to be worse. Since each value of $X$ from 1 to 6 is equally likely, to play it safe, I'm going to choose $7/2$ as my estimate, which is what the conditional expectation suggests.\n",
      "\n",
      "We can check this claim with samples using `sympy` below:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "#generate samples conditioned on z=7\n",
      "samples_z7 = lambda : stats.sample(x, sympy.Eq(z,7)) # Eq constrains Z\n",
      "mn= mean([(6-samples_z7())**2 for i in range(100)]) #using 6 as an estimate\n",
      "mn0= mean([(7/2.-samples_z7())**2 for i in range(100)]) #7/2 is the MSE estimate\n",
      "print 'MSE=%3.2f using 6 vs MSE=%3.2f using 7/2 ' % (mn,mn0)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "MSE=9.99 using 6 vs MSE=2.97 using 7/2 \n"
       ]
      }
     ],
     "prompt_number": 16
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Please run the above code repeatedly until you have convinced yourself  that the $\\mathbb{E}(x|z)$ gives the lower MSE every time."
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "To push this reasoning,  let's consider the case where the die is so biased so that the outcome of *6* is ten times more probable than any of the other outcomes as in the following:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# here 6 is ten times more probable than any other outcome\n",
      "x=stats.FiniteRV('D3',{1:Rational(1,15), 2:Rational(1,15), 3: Rational(1,15), \n",
      "                       4:Rational(1,15), 5:Rational(1,15), 6: Rational(2,3)})\n",
      "z = x + y\n",
      "\n",
      "# now re-create the plot\n",
      "fig, ax = subplots()\n",
      "foo=lambda i: density(z)[Integer(i)].evalf() # some tweaks to get a float out\n",
      "Zmass=array(map(foo,v.flat),dtype=float32).reshape(6,6)\n",
      "\n",
      "ax.pcolor(arange(1,8),arange(1,8),Zmass,cmap=cm.gray)\n",
      "ax.set_xticks([(i+0.5) for i in range(1,7)])\n",
      "ax.set_xticklabels([str(i) for i in range(1,7)])\n",
      "ax.set_yticks([(i+0.5) for i in range(1,7)])\n",
      "ax.set_yticklabels([str(i) for i in range(1,7)])\n",
      "for i in range(1,7):\n",
      "    for j in range(1,7):\n",
      "        ax.text(i+.5,j+.5,str(i+j),fontsize=18,color='y')\n",
      "ax.set_title(r'Probability Mass for $Z$; Nonuniform case',fontsize=16)    \n",
      "ax.set_xlabel('$X$ values',fontsize=18)\n",
      "ax.set_ylabel('$Y$ values',fontsize=18);"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "display_data",
       "png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAEjCAYAAADe/dHWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8FPX9x/HXzN7J5k5IAuGGAAoqKKI/qNyoEQ9EwQOB\nqtTbilqPapGiLdoWqSCeBbk8WijFcqhgQYQqUs4AJpxBjlxsltzZzc7x+yMkEpKQa5Nhk+/z8fDx\ncL/z3dn37E4+zPGdGUnXdR1BEAShVZCNDiAIgiA0H1H0BUEQWhFR9AVBEFoRUfQFQRBaEVH0BUEQ\nWhFR9AVBEFoRUfQFQRBaEVH0BUEQWpGALvoLFy5EluWK/0JDQ7niiiuYN28eqqr67XOmT5+OLMto\nmtas8yrvW9Pr6tpWrlzJ7NmzG53zXOd+z4cOHaoyfdOmTRXT//Of//j1sxtjwYIFdO/eHZvNRkRE\nhNFx6q38e4+IiCA3N7fSNEVRkGWZ3//+9walq7/q1t9A/40CUUAX/XLLly9n69atfPjhh7Rr144n\nnniCGTNm+PUzJElq9nlNmTKFrVu3XvC95/dZuXIlb775ZuNDViM0NJQlS5ZUaV+0aBEhISFIkuTX\n76kx0tPT+dWvfkWfPn346quvmuUfo8zMTMxmM23btuWmm27i8ccfZ+rUqdx2223IssyHH37YoPnm\n5eXxxhtvVDvtYvm+6+L8ddWI30hoIUX/iiuu4Oqrr2b8+PGsWbOGjh078tZbb9XY3+v11vsz/Hm3\nirrOq127dlx99dUXfG91fZrKmDFjWLp0aaW2kpIS/vnPfzJ27Fi/fkeNdejQITRN49FHH2XIkCH0\n69ev0fOsbb1ZtWoVd955J4cPH2bNmjW8/fbbvPzyy6SmpvLQQw8xZcqUBn3uqFGjmDt3LtnZ2Q16\n/8Xi/HXViN9IaCFF/3w33HAD+fn5uFyuil3KkydPMnbsWNq1a8f48eMr+m7dupXhw4cTHR1Nhw4d\nuPvuu8nIyKh2vqdOneLWW28lJiaGnj178pe//KXS9MOHD3PffffRpUsXgoKC6Nq1K48++miVXfO6\nzAuq3x2+UJ/JkyezePFiTp06VXG4pXPnzqxYsQJZlklOTq7y/iFDhnDttdde8DPK3Xffffz0009s\n2bKlou1f//oXmqYxduzYKv3r8n0cPHiQMWPGEBsbi8PhoGPHjowbN67S4bm69DnX5MmTGTp0KFBW\nMGVZ5v7776+YXpffvLb1pjrfffcdCxYsICgoCCj7B/Hmm2+mR48evPPOOxd874W8/PLLALz22mu1\n9q1t2cqXKzMzk7vuuou4uDg6derEq6++WuUf7cmTJ9O5c+cqnzFkyJCK77c+8zx/XW2q36i8/dSp\nU9xxxx3ExsZyzTXX8M9//hMoOzJw3XXXER4ezrBhwzh69Git3ytAWload911V8X63LNnT15//fWK\n6XX9+6/L+pyWlsa4cePo1KkTUVFRjBw5stq/34ZokUX/+++/x+FwEBUVVdF2ww030L9/fz7++GOe\nfvppALZs2cKgQYMwm80sXLiQN954g+3bt9OvXz/y8vKqzDcpKYlrrrmGTz/9lNGjR/Pcc8/x6quv\nVkzPyMggISGBN998k9WrV/PAAw+wdu3aaotFbfMqV5fd9/I+06ZNIykpiZiYGLZu3crWrVtZuXIl\nt956K23btuX999+v9L7U1FS+/fZbHnnkkVo/A6Bjx45cd911lQ7xLF68mNtvvx2n01mlf12+j5tu\nuolDhw7x2muv8eWXX/L6669jt9srnfOoS59zTZs2jTlz5gDwzjvvsHXrVn73u98B9f/Nq1tvajJ6\n9GgcDgcAmqZxzz33oOs6f//73yt+o2PHjtX7WHx8fDyPP/44H3zwAcePH6+xX32W7ZZbbmHAgAHM\nnz+ffv368corr7Bo0aIq86xu/avpMF5d5nnuutoUv9HUqVMrPmPMmDEMGTKEd999F4vFwsSJE5k1\naxZz587l2WefZdq0aezfv5977rmnxu+0XEpKCn369CE1NZUZM2awdu1ann76aU6dOlXRp65//7Wt\nzwcPHuSyyy4jMzOTN998k6VLlxIUFMQ111zDgQMHas1aKz2AffTRR7okSfqBAwd0n8+nHzp0SH/5\n5Zd1SZL0iRMn6rqu66+88oouSZI+Z86cKu8fOHCgnpiYqKuqWtGWlpamWywW/be//W1FW/k8nn32\n2Urvv+222/SQkBA9Nze32nw+n0//7LPPdEmS9JSUlHrPq7xvTa+ra5s0aZKekJBQJcv06dP1sLAw\nvaioqKJt6tSpemRkpO7xeKrNX678ez5y5Ii+YMECPSIiQvd6vXp6erpuNpv1r7/+Wt+4caMuSZL+\nn//8p8b5nP995OXl6bIs6wsXLqzxPXXpU53169frkiTpmzZtqtRe39+8uvWmLh577DG9e/fuusvl\nqtR+7Ngx3Ww266+++mqt8zj3e3e73Xp4eLh+//3367pe9l1KkqT//ve/r9eylS/XjBkzKvpomqZH\nRkbqo0aNqvT5kyZN0jt16lQl1+DBg/WhQ4dWvK7rPM9fV5vqNypvnzlzZkXbmTNndJPJpMuyrGdk\nZFS0z5kzR5ckST9+/HiV5TzXqFGj9A4dOuglJSUX7Heuc9f3H3/8Udf1uq3Po0ePrvK36vV69dDQ\nUH38+PF1/vyatIgt/Z49e2K1WklMTOT1119n4sSJzJ07t1KfMWPGVHqtqirbt29n/PjxlQ6hdOrU\niYEDB/L9999X+ZyRI0dWej1q1CgKCwvZt28fAKWlpfzxj3+kZ8+eBAUFYbVaufvuuwGqjHqpbV7+\n9qtf/Yri4mI+/fRTADweD4sWLWLixInYbLY6z+eOO+7A6/Xy73//m48//pj4+HiGDx9ebd/avo/Q\n0FCuu+46Zs6cyd/+9rdqRwbVpU9dNeQ3P3+9qYs33niD5cuX8+WXX1ba24SyvSWfz1dxyKauIiIi\neOaZZ1i8eDEHDx6sMr2+y3b77bdX/L8kSfziF7+44F5EXfhjnv78jW699daK/w8PD6dNmzZcddVV\nxMXFVbT36NEDgBMnTtSYSdM0tmzZwr333ovdbq+xX13+/mtbn3VdZ8OGDdxzzz1YrVYURakYqXXD\nDTdUGdjREC2i6K9cuZLt27dz4MABioqKWLhwIaGhoZX6xMfHV3rtcrkoLS0lOjq6yvxiY2Mr7baV\nu/LKKyu9vuqqq4CyUQgAL774Ii+//DLjxo3j888/Z9u2baxYsQKAM2fO1Gte/hYfH8+tt97Ke++9\nB8CyZcs4c+YMDz30UL3mExISwm233caSJUtYsmQJ9957b4196/J9fPTRRwwYMIAXX3yRHj160LVr\nVz744INK86lLn7poyG9+/npTm08++YTXXnuNVatW0aVLFwCOHDnil5PcU6dOJTIykmnTplU5vFLb\nsp2/XvXq1avS6/DwcDweT6Py+WOe/vyNygt6OZvNVqXNarUCXDCny+WipKSEhISEC2a/0Pp+7nH9\nC63P5Z/13nvvYbVaK/23bNmyape/vlpE0e/duzf9+vWje/fuFT/i+c7/I4mJicFqtfLdd99V6ZuZ\nmVntD7x9+/ZKr//3v/8BZaMSAD777DOGDx/OjBkzGDlyJFdddRVhYWHV5qltXk3hkUceYceOHezc\nuZP333+f6667jp49e9Z7PhMnTmT16tXs27ePiRMn1tivLt9Hp06dWLRoEadPn2bXrl0MHDiQRx55\nhMOHD9erT1005Devz5DIDRs2MGXKFD799FP69+9f0f7WW2/5ZWhlcHAwL774IsuWLWP37t2VptW2\nbA1Zr+x2e7XH0HNycuo9r7pq6t+oIaKjo3E4HJw8efKC/er691/T+nzkyBGioqJwOBw8+eSTbN++\nvcp/P/zwQ6OXp0UU/YaQZZmrr76a//znP5VOCP7000989913/N///V+V96xfv77S63Xr1hESEkKf\nPn2AstEa5//IH330UbWfX9u8GiokJISSkpJqpw0bNowePXowdepUvvvuOx5++OEGfcbIkSMZP348\nDz/8cJWtu3PV5/sAuPzyy5kxYwa6rrN27doG96lJQ37zukpOTmbs2LHMnj2b0aNHV7QfPHiwYjSP\nPzz66KO0a9eOl156qVK7P5bt/OLZqVMncnNz2bt3b0XbkSNH/HMysQZN+Rs1JtN1113H0qVLL7hH\nUN/1HSqvz2vWrKn4rN27d9O3b1/69etX5b/GMjd6DgFs5syZDBkyhNGjR/Poo49SUFDAK6+8QnR0\nNL/5zW+q9F+3bh0zZ87kqquu4quvvuLf//43r776KiEhIUDZKIIVK1Ywffp0BgwYwOeff86ePXuq\n/eza5tVQffr0Yd68efzpT3/iuuuuIzg4uNI/JI888ghPPfUUMTEx1Q6zrAtZlvnkk09q7Vfb97F3\n716efPJJ7rrrLrp27YrL5WLRokVYLBZ+8YtfAGXF9Ne//vUF+9RHfX/zujhx4gRJSUk8/vjj/OpX\nv6poP3r0KLfcckulESzHjh2jS5cuvPLKK7zyyiv1/iyr1cq0adMqfY6/lu38Q1B33nknv/vd77j/\n/vt5+umn0TSNN998k9jY2Ca9JqMpfiNo3LU2s2fPpn///lx77bU888wztGvXjqNHj7Jnz56KUUh1\n+fuvy/o8d+5crrzySvr3788tt9zCwIEDyc3NZefOnWiaxsyZMxu8HNACtvRr27W70FWiAwcOZMuW\nLXi9XiZPnsxzzz3HVVddxY4dOyqdEyifx9q1a/nhhx+45557WL16NX/6058qbXHNnTuXMWPGMGfO\nHB5//HEkSeLvf/97tZlqm1d12atblvPbJk2axOTJk5k9ezYDBw6sdDILyk7EQtk4aYvFcsHv7vzP\n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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x4392030>"
       ]
      }
     ],
     "prompt_number": 17
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "As compared with the first figure, the probability mass has been shifted away from the smaller numbers. Let's see what the conditional expectation says about how we can estimate $X$ from $Z$."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "E(x, Eq(z,7)) # conditional expectation E(x|z=7)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "pyout",
       "prompt_number": 18,
       "text": [
        "5"
       ]
      }
     ],
     "prompt_number": 18
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Now that we have $\\mathbb{E}(x|z=7) = 5$, we can generate samples as before and see if this gives the minimum MSE."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "#generate samples conditioned on z=7\n",
      "samples_z7 = lambda : stats.sample(x, Eq(z,7)) # Eq constrains Z\n",
      "mn= mean([(6-samples_z7())**2 for i in range(100)]) #using 6 as an estimate\n",
      "mn0= mean([(5-samples_z7())**2 for i in range(100)]) #7/2 is the MSE estimate\n",
      "print 'MSE=%3.2f using 6 vs MSE=%3.2f using 5 ' % (mn,mn0)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "MSE=3.27 using 6 vs MSE=2.92 using 5 \n"
       ]
      }
     ],
     "prompt_number": 19
    },
    {
     "cell_type": "heading",
     "level": 3,
     "metadata": {},
     "source": [
      "Summary"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Using a simple example, we have emphasized the connection between minimum mean squared error problems and conditional expectation. Next, we'll continue revealing  the true power of the conditional expectation as we continue to develop a corresponding geometric intuition.\n",
      "\n",
      "As usual, the corresponding ipython notebook for this post  is available for download [here](https://github.com/unpingco/Python-for-Signal-Processing/blob/master/Conditional_expectation_MSE.ipynb). \n",
      "\n",
      "Comments and corrections welcome!"
     ]
    }
   ],
   "metadata": {}
  }
 ]
}